// 客商类型
export const CS_TYPE = {
  CUSTOMER: 1, // 客户
  SUPPLIER: 2, // 供应商
  SETTLEMENT_C: 3, // 应收结算对象
  SETTLEMENT_V: 4, // 应付结算对象
};

// IAM数据类型
export const IAM_USER_TYPE = {
  ALLUSER: 1, // 所用用户,
  SELLER: 2, // 具有销售员代码的用户,
};

export const CONTACT_TYPE = {
  CONSIGNER: 1, // 发货人
  CONSIGNEE: 2, // 收货人
  NOTIFIER: 3, // 通知人
};

// 联系人数据结构
export const CONTACT_SCHEMA = Object.freeze({
  name: '',
  nameCn: '',
  nameEn: '',
  nameRu: '',
  country: '',
  address: '',
  addressCn: '',
  addressEn: '',
  addressRu: '',
  tel: '',
  fax: '',
  email: '',
});

// 订单费用行数据结构
export const FEE_SCHEMA = Object.freeze({
  rowNum: '',
  bcFreightId: '',
  orderId: '',
  rpId: '',
  freightName: '',
  freightCode: '',
  settleCustName: '',
  settleCustCode: '',
  custCdhNo: '',
  custCdhSiteNo: '',
  settleCustMdmCode: '',
  unitCode: '',
  quantity: 1, // 默认1
  settleCurrency: '',
  unitPrice: '',
  settleAmount: '',
  taxRate: '',
  taxRateCode: '',
  taxRateName: '',
  tax: '',
  totalPriceExcludeTax: '', // 不入库，前端自动计算
  exchangeRate: '', // 不入库
  ctnNo: '',
  tpContainerId: '',
  containerSource: '', // 箱源
  containerSequence: '', // 箱序号
  eifhStatus: '',
});

// 业务类型
export const BUSI_TYPE = {
  BOX: '整箱业务', // 整箱业务
  CAR: '整车业务', // 整车业务
  LCL: '拼箱业务', // 拼箱业务
};

// 线路类型
export const LINE_TYPE = {
  CENTRALIZED: '集运线路',
  TRUNKLINE: '干线路由',
  DREDGE: '疏运线路',
};
// 始发地目的地类型
export const AREA_TYPE = {
  PORT: '1', // 港口
  RAILWAY: '2', // 车站
  AREA: '3', // 行政区划
};

// 订单状态
export const ORDER_STATE = {
  //    1)待分配；
  TO_ALLOCATE: 'S1',
  //    2)待承接；
  TO_UNDERTAKE: 'S2',
  //    3)待反馈委托书草稿；
  TO_FEEDBACK_DRAFT_POWER_OF_ATTORNEY: 'S3',
  //    4)待客户提交正式委托书；
  TO_SUBMITS_OFFICIAL_POWER_OF_ATTORNEY_FROM_CLIENT: 'S4',
  //    5)退回给客户；
  RETURN_TO_CLIENT: 'S5',
  //    6)被废弃；
  OUT_OF_USE: 'S6',
  //    7)退回给分配员；
  RETURN_TO_ALLOCATOR: 'S7',
  //    8)执行中；
  IN_PROCESSING: 'S8',
  //    9)执行完毕；
  COMPLETED: 'S9',
  //    10)入账申请中；
  IN_CARRY_ON: 'S10',
  //    11)入账失败；
  FAIL_TO_CARRY_ON: 'S11',
  //    12)原始费用已入账；
  ORIGINAL_EXPENSES_HAVE_BEEN_RECORDED: 'S12',
  //    13)调账中；
  IN_ACCOUNTING_ADJUSTMENT: 'S13',
  //    14)调账费用已入账；
  ADJUSTMENT_COSTS_HAVE_BEEN_RECORDED: 'S14',
  //    15)调账失败；
  FAIL_TO_ACCOUNTING_ADJUSTMENT: 'S15',
  //    16)应收客户已结清；
  CLOSED_ACCOUNT_OF_CUSTOMER_RECEIVABLE: 'S16',
  //    17)已结清。
  CLOSED_ACCOUNT: 'S17',
  // 订单状态：S1.待分配 2.待承接 3.待反馈委托书草稿 4待客户提交正式委托书 5.退回给客户 6.被废弃 7.退回给分配员 8.执行中 9.执行完毕 10.入账申请中 11.入账失败 12.原始费用已入账 13.调账中 14.调账费用已入账 15.调账失败 16.应收客户已结清 S17.已结清
};
// 订单状态中文名称
export const CN_ORDER_STATE = {
  //    1)待分配；
  // S1: '待分配',
  //    2)待承接；
  S0: '待客户确认',
  S2: '待承接',
  //    3)待反馈委托书草稿；
  // S3: '待反馈委托书草稿',
  // //    4)待客户提交正式委托书；
  // S4: '待客户提交正式委托书',
  // //    5)退回给客户；
  // S5: '退回给客户',
  //    6)被废弃；
  //    7)退回给分配员；
  // S7: '退回给分配员',
  //    8)执行中；
  S8: '执行中',
  //    9)执行完毕；
  S9: '执行完毕',
  S6: '已作废',

  // //    10)入账申请中；
  // S10: '入账申请中',
  // //    11)入账失败；
  // S11: '入账失败',
  // //    12)原始费用已入账；
  // S12: '原始费用已入账',
  // //    13)调账中；
  // S13: '调账中',
  // //    14)调账费用已入账；
  // S14: '调账费用已入账',
  // //    15)调账失败；
  // S15: '调账失败',
  // //    16)应收客户已结清；
  // S16: '应收客户已结清',
  // //    17)已结清。
  // S17: '已结清',
};

// 码值中心字典名
export const DICT = {
  CAR: 'sysydict-car', // 车型
  BOX: 'sysydict-box', // 箱型
  TAXRATE: 'sysydict-taxRate', // 税率
  FEENAME: 'sysydict-feeName', // 本地费目
  FEEUNIT: 'sysydict-feeUnit', // 计费单位
  PACKAGE: 'sysydict-package', // 包装类型
};

// 工单类型
export const BILLTYPE = {
  // 用箱申请工单，集卡上门取货工单，出口报关工单，场站装箱工单，国际班列工单，水运订舱集运工单，国内铁路集运工单
  // 集卡送货到门工单，进口清关工单，场站拆箱工单
  TP_APPLY_CONTAINER_WORKBILL: '用箱申请工单',
  TP_PICKUP_WORKBILL: '集卡上门取货工单',
  TP_EXPORT_CUSTOMS_WORKBILL: '出口报关工单',
  TP_CY_PACK_WORKBILL: '场站装箱工单',
  TP_INTERNATIONAL_TRAINS_WORKBILL: '国际班列工单',
  TP_SHIP_BOOKING_WORKBILL: '水运订舱集运工单',
  TP_COLLECT_TRAINS_BOOKING_WORKBILL: '国内铁路订舱集运工单',
  TP_COLLECT_ROAD_WORKBILL: '公路中转集运工单',

  TP_DELIVERY_WORKBILL: '送货到门工单',
  TP_IMPORT_CUSTOMS_WORKBILL: '进口清关工单',
  TP_CY_DEVANNING_WORKBILL: '场站拆箱工单',

  TP_LOOSE_CARD_DELIVERY_WORKBILL: '散卡送货到门工单',
  TP_PORT_TRANSIT_WORKBILL: '口岸转关工单',
  TP_TRAINS_BOOKING_WORKBILL: '国内铁路订舱干线工单',
  TP_CONTAINER_BACK_WORKBILL: '还箱确认工单',
  TP_STATION_DISCHARGE_WORKBILL: '国内铁路到站接货工单',
  TP_PICKUP_EMPTY_WORKBILL: '提空箱工单',
  TP_RETURN_EMPTY_WORKBILL: '还空箱工单',
  TP_SHIP_BOOKING_WORKBILL_DISTRIBUTION: '水运订舱疏运工单',
  TP_DISTRIBUTE_TRAINS_BOOKING_WORKBILL: '国内铁路订舱疏运工单',
  TP_LOOSE_CARD_PICKUP_WORKBILL: '散卡上门取货工单',
  TP_DISTRIBUTE_ROAD_WORKBILL: '公路中转疏运工单',
};

export const BILLTYPENEW = {
  RAIL_WORKBILL: '国际班列', // 国际
  CONTAINER_WORKBILL: '用箱',
  CY_WORKBILL: '场拆',
  CUSTOMS_WORKBILL: '报关',
  TRAILER_WORKBILL: '拖车',
  BULK_CARGO_WORKBILL: '散货',
  DOMESTIC_RAIL_WORKBILL: '国内',
  SHIP_WORKBILL: '水运',
  OVERSEAS_WORKBILL: '境外',
};

export const BILLTYPENEW_EN = {
  RAIL_WORKBILL: 'International Train', // 国际
  CONTAINER_WORKBILL: 'Container',
  CY_WORKBILL: 'Site Disassembly',
  CUSTOMS_WORKBILL: 'Customs Declaration',
  TRAILER_WORKBILL: 'Trailer',
  BULK_CARGO_WORKBILL: 'Pick Up Bulk Goods',
  DOMESTIC_RAIL_WORKBILL: 'Domestic Railway',
  SHIP_WORKBILL: 'Water Transport',
  OVERSEAS_WORKBILL: 'Overseas',
};

export const BILLSTATUS = {
  Y: '有效',
  N: '无效',
};

export const BillTypeToNumber = {
  // TP_TRAINS_BOOKING_WORKBILL: 1, // 国内铁路订舱
  DOMESTIC_RAIL_WORKBILL: 7, // 国内
  RAIL_WORKBILL: 1, // 国际
  CONTAINER_WORKBILL: 2, // 用箱
  TRAILER_WORKBILL: 5, // 拖车
  CY_WORKBILL: 3, // 场拆装
  CUSTOMS_WORKBILL: 4, // 报关
  BULK_CARGO_WORKBILL: 6, // 散货
  SHIP_WORKBILL: 8, // 水运
  OVERSEAS_WORKBILL: 9, // 境外工单
  // TP_PICKUP_WORKBILL: 9, // 上门提货
  // TP_STATION_DISCHARGE_WORKBILL: 10, // 国内到站接货
  // TP_PORT_TRANSIT_WORKBILL: 11, // 口岸转关
  // TP_RETURN_EMPTY_WORKBILL: 12, // 还空箱工单
  // TP_PICKUP_EMPTY_WORKBILL: 13, // 提空箱
  // TP_CY_DEVANNING_WORKBILL: 14, // 场站拆箱
  // TP_SHIP_BOOKING_WORKBILL: 15, // 水运集运
  // TP_SHIP_BOOKING_WORKBILL_DISTRIBUTION: 18, // 水运疏运
  // TP_COLLECT_TRAINS_BOOKING_WORKBILL: 16, // 国内铁路订舱(集运)
  // TP_DISTRIBUTE_TRAINS_BOOKING_WORKBILL: 17, // 国内铁路订舱(疏运)
  // TP_LOOSE_CARD_PICKUP_WORKBILL: 19, // 散卡取货
  // TP_LOOSE_CARD_DELIVERY_WORKBILL: 20, // 散卡送货
  // TP_COLLECT_ROAD_WORKBILL: 21, // 公路集
  // TP_DISTRIBUTE_ROAD_WORKBILL: 22, // 公路疏
};

export const SUPPLEMENT_TYPE = {
  ZXJGBL: '装箱结果补料',
  ZXJCBL: '重箱进场补料',
  CKFXBL: '出口放行补料',
  JKFXBL: '进口放行补料',
  CKSBBL: '出口申报补料',
  JKSBBL: '进口申报补料',
  GXFYBL: '干线发运补料',
  GDJXJCBL: '重箱进场补料单',
};
export const BillTypeToString = {
  1: 'RAIL_WORKBILL', // 国际
  2: 'CONTAINER_WORKBILL', // 用箱
  3: 'CY_WORKBILL', // 场拆
  4: 'CUSTOMS_WORKBILL', // 报关
  5: 'TRAILER_WORKBILL', // 拖车
  6: 'BULK_CARGO_WORKBILL', // 散货
  7: 'DOMESTIC_RAIL_WORKBILL', // 国内
  8: 'SHIP_WORKBILL', // 水运
  // 9: 'TP_PICKUP_WORKBILL', // 上门提货
  // 10: 'TP_STATION_DISCHARGE_WORKBILL', // 国内到站接货
  // 11: 'TP_PORT_TRANSIT_WORKBILL', // 口岸转关
  // 12: 'TP_RETURN_EMPTY_WORKBILL', // 还空箱工单
  // 13: 'TP_PICKUP_EMPTY_WORKBILL', // 提空箱
  // 14: 'TP_CY_DEVANNING_WORKBILL', // 场站拆箱
  // 15: 'TP_SHIP_BOOKING_WORKBILL', // 水运
  // 16: 'TP_COLLECT_TRAINS_BOOKING_WORKBILL', // 国内铁路订舱(集运)
  // 17: 'TP_DISTRIBUTE_TRAINS_BOOKING_WORKBILL', // 国内铁路订舱(疏运)
  // 18: 'TP_SHIP_BOOKING_WORKBILL_DISTRIBUTION', // 水运
  // 19: 'TP_LOOSE_CARD_PICKUP_WORKBILL', // 散卡取货
  // 20: 'TP_LOOSE_CARD_DELIVERY_WORKBILL', // 散卡送货
  // 21: 'TP_COLLECT_ROAD_WORKBILL', // 公路集
  // // 22: 'TP_DISTRIBUTE_ROAD_WORKBILL', // 公路疏
};

// 入账状态 这是本来要在码值里边搞的,没空了
export const BILLINGSTATE = {
  WSH: '未审核',
  BFSH: '部分审核',
  YSH: '已审核',
  YQR: '已确认',
  YSC: '已上传',
  SCZ: '上传中',
  SCSB: '上传失败',
  BD: '补单',
};

// 箱源 这个也是在码值里边维护的
export const ContainerSourceOptions = {
  COC外运提供: 'COC',
  SOC客户自备: 'SOC',
};

// 订单附加服务
// key 为订单属性字段， value为描述信息
export const ORDER_SERVICES = {
  exportFlg: 'order.form.exportDeclare',
  exportInsuranceFlg: 'order.form.exportCheck',
  importFlg: 'order.form.importDeclare',
  importInsuranceFlg: 'order.form.importCheck',
  proxyInsuranceFlg: 'order.form.insuranceService',
  destGoodsCtrlFlg: 'order.form.destControl',
};

// 通讯方式
export const LINK_MODE = {
  EMAIL: 'setting.company.email',
  DATAGRAM: 'setting.company.payload',
  CHIHOU: 'setting.company.scout',
  SELF_TRAILER_MINI_PROGRAM: 'setting.company.SELF_TRAILER_MINI_PROGRAM',
};

// 时区
export const TIME_ZONE = {
  e1: 'setting.company.e1',
  e2: 'setting.company.e2',
  e3: 'setting.company.e3',
  e4: 'setting.company.e4',
  e5: 'setting.company.e5',
  e6: 'setting.company.e6',
  e7: 'setting.company.e7',
  e8: 'setting.company.e8',
  e9: 'setting.company.e9',
  e10: 'setting.company.e10',
  e11: 'setting.company.e11',
  e12: 'setting.company.e12',
  w1: 'setting.company.w1',
  w2: 'setting.company.w2',
  w3: 'setting.company.w3',
  w4: 'setting.company.w4',
  w5: 'setting.company.w5',
  w6: 'setting.company.w6',
  w7: 'setting.company.w7',
  w8: 'setting.company.w8',
  w9: 'setting.company.w9',
  w10: 'setting.company.w10',
  w11: 'setting.company.w11',
  w12: 'setting.company.w12',
};

// 结算系统
export const SETTLEMENT_SYSTEM = {
  BMS: 'BMS',
  HN: '华南结算中心',
  DSP: '外运物流DSP',
  HB: '华北结算系统',
};

// 箱源
export const ContainerSource = [
  {
    label: 'COC外运提供',
    value: 'COC',
  },
  {
    label: 'SOC客户自备',
    value: 'SOC',
  },
];

export const LINE_STATUS = {
  ORIGINAL: '初始建立',
  TO_OPEN_REVIEW: '开通申请中',
  OPEN_APPLY_BACKED: '开通申请被退回',
  OPENED: '已开通',
  TO_SUSPENSION_REVIEW: '停运申请中',
  SUSPENSION_APPLY_BACKED: '停运申请被退回',
  SUSPENED: '已停运',
  DELETED: '已删除',
};
export const ResponsibleStatus = {
  TO_SUBMIT_OPERATOR: 1,
  RETURNED_BY_OPERATOR: 2,
};
export const ExecutorStatus = {
  TO_RECEIVE_WITH_OPERATOR: 1,
  IN_PROCESSING: 2,
  COMPLETED: 3,
};
export const ApprovedBoxTypeOptions = {
  1: '20GP',
  2: '40GP',
  3: '40HC',
  4: '45HC',
};
// 本地费目状态中文名称
export const CN_CHARGE_STATUS = {
  N: '待提交生效',
  Y: '生效提交中',
  S: '已生效',
  E: '提交生效失败',
  T: '作废提交中',
  F: '已作废',
  I: '提交作废失败',
};

// 箱状态
export const CTN_STATUS = {
  INIT: '箱记录创建',
  PREPARE_CONTAINER: '已备箱',
  SUITCASE: '已提箱',
  ARRIVE_PACKING_PLACE: '运抵装箱地',
  PACKING: '已装箱',
  HEAVY_CONTAINER_ENTER: '重箱进场',
  JY_DISPATCH: '集运已发运',
  JY_ARRIVE: '集运已抵达',
  HEAVY_CONTAINER_ENTER_FZ: '重箱进发站场站',
  CUSTOMS_RELEASE: '海关已放行',
  MAIN_LINE_DISPATCH: '干线已发运',
  ARRIVE_PORT: '已到口岸',
  PORT_RELEASE: '口岸已放行',
  PORT_CHANGE: '口岸已换装',
  PORT_DISPATCH: '口岸已发运',
  MAIN_LINE_ARRIVE: '干线已抵达',
  MAIN_LINE_ARRIVE_SITE: '干线到站海关放行',
};
